import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-03-08
 * Time: 13:08
 */
public class Csdn {
    /**
     * 题目：一球从h米高度自由落下，每次落地后反跳回原高度的一半；
     * 再落下，求它在 第n次落地时，共经过多少米？第n次反弹多高？
     * @param args
     */
    public static void main1(String[] args) {
        System.out.println("请输入小球落地高度");
        Scanner scan =new Scanner(System.in);
        double height= scan.nextDouble();
        System.out.println("请输入小球落地次数");
        int n =scan.nextInt();
        int sum =0;
        while(n!=0) {
            sum+=height;
            height/=2;
            n--;
        }
        System.out.println(sum);
    }
    public static void main2(String[] args) {
        Scanner scan =new Scanner(System.in);
        System.out.println("请输入距离地面高度h:>");
        double height =scan.nextDouble();
        System.out.println("请输入落地次数n:>");
        int n =scan.nextInt();
        double sum =height;//刚开始距离地面高度为h
        height/=2;//这个是第一次距离
        for (int i = 2; i <= n; i++) {
            sum+=height*2;
            height/=2;//反弹高度
        }
        System.out.println("在100米中，经过"+(n)+"次后"+"能反弹："+height+"米"+
                "经过的距离:"+sum);
    }

    /**
     *题目：一个整数，它加上100后是一个完全平方数，
     * 再加上168又是一个完全平方数，请问该数是多少？
     * @param args
     */
    public static void main3(String[] args) {
          for(int i=0;i<=10000;i++) {
              int num1 =(int)Math.sqrt(i+100);
              int num2 =(int)Math.sqrt(i+100+168);
              if((num1*num1)==(i+100)&&(num2*num2)==(i+100+168)) {
                  System.out.println(i);
              }
          }
    }

    /**
     * 题目：输入某年某月某日，判断这一天是这一年的第几天？
     * @param args
     */
    public static boolean isLeapYear(int year) {
        if(year%400==0||year%4==0&&year%100!=0) {
            return true;
        }else {
            return false;
        }
    }
    public static void main4(String[] args) {
         Scanner scan=new Scanner(System.in);
         System.out.println("请输入年月日：>");
         int year =scan.nextInt();
         int month =scan.nextInt();
         int day =scan.nextInt();
         int[] arr ={31,28,31,30,31,30,31,31,30,31,30,31};
         if(isLeapYear(year)) {
             arr[1]=29;
         }else {
             arr[1]=28;
         }
         //累加月数
        int sum =0;
        for (int i = 1; i < month; i++) {
            sum+=arr[i-1];
        }
        sum+=day;
        System.out.println(sum);
    }

    /**
     * 题目：输入三个整数x,y,z，请把这三个数最大值打印
     * @param args
     */

    public static int maxNum(int num1,int num2) {
        return num1>num2?num1:num2;
    }
    public static void main5(String[] args) {
       Scanner scan =new Scanner(System.in);
       System.out.println("请输入三个整数：>");
       int num1 =scan.nextInt();
       int num2 =scan.nextInt();
       int num3 =scan.nextInt();
       int maxIndex = maxNum(num1,num2);
        System.out.println(maxNum(maxIndex, num3));
    }

    /**
     * 打印一个9*9乘法口诀表
     * @param args
     */
    public static void nineMulNineTable(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+" ");
            }
            System.out.println();
        }
    }
    public static void main6(String[] args) {
        Scanner scan =new Scanner(System.in);
        int n =scan.nextInt();
        nineMulNineTable(n);
    }
    public static int fun1(int day) {
        if(day==10) {
            return 1;
        }else {
            return (fun1(day+1)+1)*2;
        }
    }
    public static void main7(String[] args) {
       Scanner scan =new Scanner(System.in);
       int day =scan.nextInt();
        System.out.println("猴子第"+day+"天"+"吃了"+fun1(day)+"个桃子");
    }

        public static void main8(String[] args) {
            int sum = 1;//第一天桃子的数量
            for (int i = 2; i <= 10; i++) {//第二天才开始计算
                sum =(sum+1)*2;
            }
            System.out.println("猴子摘的桃子数为：" + sum);
        }

    /**
     * 打印一个菱形
     * @param args
     */
    public static void main9(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个数：>");
        int n=scan.nextInt();
        //先打印上半部分
        for (int i = 0; i < n; i++) {
            //先打印空格
            for (int j = 0; j < n-1-i; j++) {
                System.out.print("  ");
            }
            //在打印*号
            for (int j = 0; j < 2*i+1; j++) {
                System.out.print("*"+" ");
            }
            System.out.println();
        }
        //在打印下半部分
        for (int i = 0; i < n-1; i++) {
             //先打印空格
            for (int j = 0; j <=i; j++) {
                System.out.print("  ");
            }
             //在打印*号
            for (int j = 0; j < (2*(n-i-1))-1; j++) {
                System.out.print("*"+" ");
            }
            System.out.println();
        }
    }

    /**
     * 有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13... 求出这个数列的前20项之和。
     * @param args
     */
    public static void main10(String[] args) {
       int first =1;
       int second =2;
       int third =0;
       double sum =0;
        double gap =(second*1.0)/first;
        for (int i = 0; i < 20; i++) {
            sum+=gap;
            third =first+second;
            first =second;
            second=third;
            gap =(second*1.0)/first;
        }

        System.out.println(sum);
    }

        public static void main11(String[] args) {
            float up = 2;//分子
            float down = 1;//分母
            float fraction = up / down;//分数
            float temp = 0;//交换数
            float sum = 0;//总和
            for (int i = 0; i < 20; i++) { //前面20项
                sum += fraction;   //分数相加
                temp = up + down;//先把分子分母的和赋值给一个交换数，不能马上赋值给分子，因为分子的值下面还有用
                down = up;     //把分子的值赋值给下一下的分母
                up = temp;     //把交换数的值赋值给下一项分子
                fraction = up / down;//下一项的分数值
            }
            System.out.println("" + sum);
        }

        public static void main12(String[] args) {
              double first =1;
              double second =2;
              double third =0;
              int n=20;
              double sum =0;
              while(n!=0) {
                  double gap =(second*1.0)/first;
                  sum+=gap;
                  third =first+second;
                  first =second;
                  second =third;
                  --n;
              }
            System.out.println(sum);
        }

        public static int fun(int n) {
              if(n==1) {
                  return 10;
              }
              return fun(n-1)+2;

        }
        public static void main15(String[] args) {
            int n =5;
            System.out.println(fun(n));
        }

        public static void main14(String[] args) {
            System.out.println("第五个人的岁数：" + getAge(5, 2));
        }

        //递归方法求第五个人的岁数
        private static int getAge(int num, int ageMore) {
            if (num == 1) {//第一个人岁数为10
                return 10;
            }
            return getAge(num - 1, ageMore) + ageMore;//每上一个人岁数加2
        }

        /**
         * 题目：给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
         */
        public static void reverseNum(int num) {
            int count =0;
            while(num!=0) {
                ++count;
                System.out.print(num%10);
                num/=10;
            }
            System.out.println();
            System.out.println(count);
        }
        public static void main17(String[] args) {
            Scanner scan =new Scanner(System.in);
            System.out.println("请输入你要逆序的数字：>");
            int num =scan.nextInt();
            reverseNum(num);
        }

    /**
     * 题目：一个5位数，判断它是不是回文数。即12321是回文数，个位与万位相同，十位与千位相同。
     * @param args
     */

//    public static boolean isPalindrome(int num) {
//       ;
//    }
        public static void main16(String[] args) {
                Scanner scan =new Scanner(System.in);
                System.out.println("请输入一个数字判断这个数字是否是回文数：>");
                int num =scan.nextInt();
               //isPalindrome(num);
        }

    public static void main18(String[] args) {
        System.out.println("请输入一个不大于5位数的数字：");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();//获取输入
        int[] arr = new int[5];//创建5位数的数组
        int i = 0;
        //循环取位
        do {
            arr[i] = num % 10;
            num = num / 10;
            i++;
        } while (num != 0);//只剩下一位时，说明获取完毕，跳出循环
        System.out.println("输入数字串的是" + i + "位数的");
        System.out.println("逆序输出：");
        //打印出数组
        for (int j = 0; j < i; j++) {
            System.out.print(arr[j] + "  ");
        }
        scanner.close();
    }

    public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);
        System.out.println("请输入一个位数不大于5的整数：>");
        int num =scan.nextInt();
        int[] arr=new int[5];
        int i=0;
        do {
            arr[i]=num%10;
            num/=10;
            i++;
        }while(num!=0);
        System.out.println("该数字有"+i+"位");
        System.out.println("逆序数字如下：");
        for (int j = 0; j < i; j++) {
            System.out.print(arr[j]+" ");
        }
    }



}
